# 导包
import unittest


# 创建测试类：继承unittest.TestCase
class TestLoginScript(unittest.TestCase):
    # setUpClass的意思说，实例化这个类时，运行时；启动unittest运行这个类时，他会自动实例化
    @classmethod
    def setUpClass(cls):
        pass

    # tearDownClass，整个类的代码运行结束之后，运行的代码这两个，相当于Postman的请求前置脚本和请求后置脚本（Tests）
    @classmethod
    def tearDownClass(cls):
        pass

    # 创建测试函数
    def test01_login_success(self):
        pass


# 毛耀萱 11:32:29 (多人发送)
# 导包
import unittest
# 创建测试类：继承unittest.TestCase
from api.login_api import Login


class TestLoginScript(unittest.TestCase):
    # setUpClass的意思说，实例化这个类时，运行时, 启动unittest运行这个类时，他会自动实例化
    @classmethod
    def setUpClass(cls):
        # 实例化封装登陆类
        cls.api_login = Login()

    # tearDownClass，整个类的代码运行结束之后，运行的代码.这两个，相当于Postman的请求前置脚本和请求后置脚本（Tests）
    @classmethod
    def tearDownClass(cls):
        pass

    # 创建测试函数
    def test01_login_success(self):
        # 使用实例化的登陆类对象来调用登陆
        response = self.api_login.login({"mobile": "13800000002",
                                         "password": "123456"})
        print("登陆成功的结果为：", response.json())
        # 毛耀萱 11:50:21 (多人发送)
        self.assertEqual(200, response.status_code)  # 断言响应状态码
        self.assertEqual(True, response.json().get("success"))  # 断言success
        self.assertEqual(10000, response.json().get("code"))  # 断言code
        self.assertIn("操作成功", response.json().get("message"))  # 断言message的值


# 毛耀萱 15:08:45 (多人发送)
# 解释os.path.dirname(os.path.abspath(__file__)) 和 "."的区别
# os.path.dirname(os.path.abspath(__file__))是获取当前项目的绝对路径，不会因为执行目录的改变，而发生改变
# "." 是获取当前项目的执行目录，会因为执行目录的改变，而发生改变
# 执行目录：命令在哪个目录下运行，那么执行目录就是这个目录。简单的说，执行目录就是cmd窗口的当前目录
import os

print("打印'.'的目录： ", os.path.abspath("./"))
print("打印os.path.dirname(os.path.abspath(__file__))的目录：", os.path.dirname(os.path.abspath(__file__)))

# 实现员工模块增删改查（重点，难点）

# - 1 登陆
import requests, app  # 导包

response = requests.post(url=app.BASE_URL + "/api/sys/login",
                         headers=app.HEADERS,
                         json={"mobile": "13800000002", "password": "123456"})
print("登陆的响应数据为：", response.json())
# - 2 提取登陆的令牌，保存到全局变量
token = response.json().get("data")
print("提取的token为：", token)
app.HEADERS["Authorization"] = "Bearer " + token
print("令牌保存到全局变量请求头之后的结果为：", app.HEADERS)
# - 3 查询员工列表
response = requests.get(url=app.BASE_URL + "/api/sys/user?page=1&size=10",
                        headers=app.HEADERS)
print("查询员工列表的结果为: ", response.json())
# - 4 添加员工
response = requests.post(url=app.BASE_URL + "/api/sys/user",
                         headers=app.HEADERS,
                         json={
                             "username": "尼古拉斯赵四",
                             "mobile": "85975567886",
                             "workNumber": "2020",
                             "timeOfEntry": "2020-01-01",
                             "formOfEmployment": "1",
                             "departmentId": "9527",
                             "departmentName": "北京27期测试部",
                             "correctionTime": "2020-12-04"
                         })
print("添加员工的的结果为: ", response.json())
# - 5 提取员工ID，保存到全局变量
app.EMP_ID = response.json().get("data").get("id")
print("提取并保存到全局变量的员工ID为：", app.EMP_ID)
# - 6 查询员工
response = requests.get(url=app.BASE_URL + "/api/sys/user" + "/" + app.EMP_ID,
                        headers=app.HEADERS)
print("查询员工URL为：", response.url)
print("查询员工的响应数据为：", response.json())
# - 7 修改员工
response = requests.put(url=app.BASE_URL + "/api/sys/user" + "/" + app.EMP_ID,
                        headers=app.HEADERS,
                        json={"username": "隔壁老王"})
print("修改员工username: ", response.json())
# - 8 删除员工
response = requests.delete(url=app.BASE_URL + "/api/sys/user" + "/" + app.EMP_ID,
                           headers=app.HEADERS)
print("删除员工的url为: ", response.url)
print("删除员工的结果为: ", response.json())


# 定义一个列表字典数据
a = [{"name":"毛宇"}, {"name":"姜欢欢"},{"name":"周春燕"}]
# 开始转化
for i in a:
    print("还是字典：",i)

# 可以通过字典自带的方法itmes.values()来获取字典的value
for i in a:
    print("取出字典的所有value：" , i.values())

# 把取出的数据，转化成元组
for i in a:
    print("把取出的字典数据，转化成元组：", tuple(i.values()))

# 把列表字典，转化成列表元组（这里只提取value）
empty_list = [] # 定义空列表，用于添加转化之后的元组数据
for i in a:
    # 把转换成元组的数据，按照循环次数添加到空列表中，从而做到转化成列表元素数据
    empty_list.append(tuple(i.values()))
    print("每次转化列表元组数据的过程：", empty_list)


